home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / byt85mar.lbr / MAC10.BQS / MAC10.BAS
BASIC Source File  |  1985-09-15  |  3KB  |  108 lines

  1. 5 REM *** "MAC10/BAS" *** DECIMAL BASED MACHINE LANGUAGE EMULATION
  2. 7 REM ***  BY: JOHN R. ROBBINS, HUNTSVILLE, ALABAMA
  3. 10 DIM M(99)
  4. 20 CLS
  5. 30 T$="###  ##   ###  ####   \                                          \"
  6. 40 T=0
  7. 50 INPUT"DO YOU WANT A TRACE (Y/N)";A$
  8. 60 IF LEFT$(A$,1)="Y" THEN T=1
  9. 70 READ A$
  10. 80 C$=LEFT$(A$,3)
  11. 90 IF C$="RUN" THEN 170
  12. 100 IF C$<>"LOA" THEN 150:    REM  INITIAL STATEMENTS MUST BE LOAD THEN RUN
  13. 110 XX=VAL(MID$(A$,6,2)) :    REM  GET MEMORY LOCATION
  14. 120 A=VAL(MID$(A$,9,4)) :    REM  GET VALUE TO BE LOADED
  15. 130 GOSUB 470
  16. 140 GOTO 70
  17. 150 PRINT "INVALID INPUT - ";A$
  18. 160 STP10 PC=0 :            E ST PC TO 0TE HECK IF DEFINED BY RUN
  19. 180 IFLNA)>4 THEN PC=VAL(MID$(A$,5,2))
  20. 190 PRINT "EXECUTION STATDA ;PC
  21. 200 IF T=0 THEN 260
  22. 210 LPRINT IIILSATE OF MEMORY" : LPRINT
  23. 220 OU 70
  24. 230 LPRINT " EEUIN STARTED AT ";PC : LPRINT
  25. 240 LPRINT C MD  VAL AC
  26. 250 REM *** LOOP FOR RUNNING PROGRAM STAT EE ***
  27. 260 V=M(PC) :        RM ET VALUE OF NEXT PROGRAM INSTRUCTION
  28. 270 C=IN(/0):        REM  GET OP CODE NUMBER
  29. 280 XX=V-C*100 :        REM  E EOY CELL NUMBER
  30. 290 IF C=0 THEN 700
  31. 30O  OSUB 350,390,430,470,510,540,580,620,6030I T=0 THEN 260
  32. 320LRN USING T$;PC,C,XX,A,C$
  33. 330 GOTO 260
  34. 340 REM ASSIGNMENT OF $TLSPURPOSE OF SUBROUTINE
  35. 350C=RA A VALUEIT H ACCUMULATOR"
  36. 360 READ A
  37. 370 PC=PC+1
  38. 380 RETR
  39. 9 C$="OUTPUT THE VALUE IN THE ACMLTR"
  40. 400 PIT:LPRINT "* UPUT VAU="A: LPRINT
  41. 410 PC=PC+1
  42. 420 RETURN
  43. 43 $"OAD CONTENTS OF"+STR$(XX)+" INTO A"40AMXX)
  44. 450 P=C1460 RETUN40C="STORE CONTENTS OF A IN"+STR$(XX)
  45. 480 M(XX)A40PC=PC+1
  46. 500 RETURN
  47. 510 C$="JUMP TO"+STR$(XX)
  48. 520 PCX
  49. 3 ETURN
  50. 540 C$="IFA<0THEN JUM O+T$(XX)
  51. 550 PC=PC+1
  52. 560 FA0THEN CX
  53. 70 REUN50 C$="IF A = 0 THEN JUMP TO"SR(X
  54. 590 PC=C160 IF A=0 THE CX
  55. 10 RETURN
  56. 620 C$="ADD CONTENTS OF"+ST$X)"TO A"
  57. 630 A=A+M(XX)
  58. 64 CP+
  59. 650 REUN60 C$="SUBTRACT CONTENTS OF"+STR$(X)"FO A"
  60. 670 A=-(X
  61. 68 CP+
  62. 690 RETURN
  63. 700 PRINT "HALT AT ";PC
  64. 710 IF T=0 HNED720 LPITHLT A ;C70 LPRIN H$1)
  65. 740 LPRINT : LPRIN"IA STATE OF MEMORY" : LPRINT
  66. 750 GOSUB 770
  67. 70ED70 FOR I=0 TO 90 STEP 10
  68. 780 FOR J=0 TO 9
  69. 790LRN USING "####;(+J);
  70. 800 NEXT J
  71. 810 LPRINT80NX 
  72. 830 LPRINT
  73. 80RTR
  74. 850 REM    PROGRAM DT OLWS
  75. 860DT OD 00 100  :RE EDA NUMBER 
  76. 7 AALA 01 715  :REM IF N=0 THENJM O15 TO STOP
  77. 880 DATA LOAD 02 9 :E STORE N IN 99
  78. 890 DATA LOAD 03 100  :REM READ IN THE FIRST VALUE, A
  79. 900 DATA LOAD 04 497  :REM STORE A IN 97
  80. 910 DATA LOAD 05 100  :REM READ IN NEXT VALUE, B
  81. 920 DATA LOAD 06 496  :REM STORE B IN 96
  82. 930 DATA LOAD 07 100  :REM READ IN FINAL NUMBER, C
  83. 940 DATA LOAD 08 897  :REM ADD A TO C
  84. 950 DATA LOAD 09 996  :REM SUBTRACT B
  85. 960 DATA LOAD 10 996  :REM SUBTRACT B AGAIN GIVING A-2*B+C
  86. 970 DATA LOAD 11 200  :REM PRINT THE RESULTS
  87. 980 DATA LOAD 12 399  :REM LOAD N INTO THE ACCUMULATOR
  88. 990 DATA LOAD 13 998  :REM SUBTRACT 1 (DECREMENT)
  89. 1000 DATA LOAD 14 501  :REM JUMP TO 01
  90. 1010 DATA LOAD 15 000  :REM HALT PROGRAM
  91. 1020 DATA LOAD 98 001  :REM LOAD IN THE VALUE 1 FOR USE IN DECREMENTING
  92. 1030 DATA RUN
  93. 1040 DATA 2
  94. 1050 DATA 3
  95. 1060 DATA 2
  96. 1070 DATA 4
  97. 1080 DATA 23
  98. 1090 DATA 51
  99. 1100 DATA 36
  100.  IN DECREMENTING
  101. 1030 DATA RUN
  102. 1040 DATA 2
  103. 1050 DATA 3
  104. 1060 DATA 2
  105. 1070 DATA 4
  106. 1080 DATA 23
  107. 1090 DATA 51
  108. 1100 DATA 3